﻿#include<iostream>
#include<set>
using namespace std;

////set测试
//void test_set1()
//{
//	set<int> s;
//	s.insert(6);
//	s.insert(9);
//	s.insert(4);
//	s.insert(1);
//	s.insert(1);
//	s.insert(5);
//	
//	//set：排序+去重
//	set<int>::iterator it = s.begin();
//	while (it != s.end())
//	{
//		cout << *it << " ";
//		++it;
//	}
//	cout << endl;
//	for (auto e : s)
//	{
//		cout << e << " ";
//	}
//	cout << endl;
//}
//void test_set2()
//{
//	set<int> s;
//	s.insert(6);
//	s.insert(9);
//	s.insert(4);
//	s.insert(1);
//	s.insert(1);
//	s.insert(5);
//	
//	//set：排序+去重
//	set<int>::iterator pos = s.find(9);  //O(logN)
//	if (pos != s.end())
//	{
//		cout << "set::find:找到了" << endl;
//	}
//	pos = find(s.begin(), s.end(), 6);   //O（N)
//	if (pos != s.end())
//	{
//		cout << "std::find:找到了" << endl;
//	}
//}
//void test_set3()
//{
//	set<int> s;
//	s.insert(6);
//	s.insert(9);
//	s.insert(4);
//	s.insert(1);
//	s.insert(1);
//	s.insert(5);
//	for (auto e : s)
//	{
//		cout << e << " ";
//	}
//	cout << endl; 
//	//s.erase(5);
//	//s.erase(7);
//	cout << s.erase(5) << endl;
//	cout << s.erase(20) << endl;
//	for (auto e : s)
//	{
//		cout << e << " ";
//	}
//	/*int x;
//	while (cin >> x)
//	{
//		set<int>::iterator pos = s.find(x);
//		if (pos != s.end())
//		{
//			s.erase(pos);
//			cout << "删除" << x << "成功" << endl;
//		}
//		else
//		{
//			cout << x << "不在set中!" << endl;
//		}
//		for (auto e : s)
//		{
//			cout << e << " ";
//		}
//		cout << endl;
//	}*/
//	
//	
//}
//void test_set4()
//{
//	set<int> s;
//	s.insert(6);
//	s.insert(9);
//	s.insert(4);
//	s.insert(1);
//	s.insert(1);
//	s.insert(5);
//	for (auto e : s)
//	{
//		cout << e << " ";
//	}
//	cout << endl;
//	//返回>=val的位置的迭代器
//	/*set<int>::iterator lowIt = s.lower_bound(5);
//	lowIt = s.lower_bound(2);*/
//
//	//要求删除>=x的所有值
//	int x;
//	cin >> x;
//	set<int>::iterator lowIt = s.lower_bound(x);
//	s.erase(lowIt, s.end());
//	for (auto e : s)
//	{
//		cout << e << " ";
//	}
//	
//}
//void test_set5()
//{
//	set<int> s;
//	s.insert(6);
//	s.insert(9);
//	s.insert(4);
//	s.insert(1);
//	s.insert(1);
//	s.insert(5);
//	for (auto e : s)
//	{
//		cout << e << " ";
//	}
//	cout << endl;
//	//返回>val的位置的迭代器
//	/*set<int>::iterator upIt = s.upper_bound(5);
//	upIt = s.upper_bound(2);*/
//
//	////要求删除>x的所有值
//	//int x;
//	//cin >> x;
//	//set<int>::iterator upIt = s.upper_bound(x);
//	//s.erase(upIt, s.end());
//	//for (auto e : s)
//	//{
//	//	cout << e << " ";
//	//}
//	
//	//要求删除x<= [] <=y的区间
//	int x, y;
//	cin >> x >> y;
//	auto leftIt = s.lower_bound(x);
//	auto rightIt = s.upper_bound(y);
//	s.erase(leftIt, rightIt);
//	for (auto e : s)
//	{
//		cout << e << " ";
//	}
//}
//int main()
//{
//	//test_set1();
//	//test_set2();
//	//test_set3();
//	//test_set4();
//	test_set5();
//
//
//	return 0;
//}

/////////////////////////////////////////
//multiset测试
//只排序
void test_multiset1()
{
	multiset<int> s;
	s.insert(9);
	s.insert(6);
	s.insert(5);
	s.insert(7);
	s.insert(3);
	s.insert(3);
	s.insert(3);
	multiset<int>::iterator it = s.begin();
	while (it != s.end())
	{
		cout << *it << " ";
		++it;
	}
	cout << endl;
}

int main()
{
	test_multiset1();
	return 0;
}
